package weibo

import (
	"github.com/crozz-net/gopenapi/request"
	"github.com/crozz-net/gopenapi/weibo/model/common"
	"net/url"
)

type api_common struct {
	client_id string
}

/**
 * 通过地址编码获取地址名称<br/>
 * http://open.weibo.com/wiki/2/common/code_to_location
 *
 * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
 * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
 * @param codes        需要查询的地址编码，多个之间用逗号分隔
 *
 * @throws WeiboException
 */
func (this *api_common) Code_to_location(source, access_token, codes string) (*common.Location, error) {
	param := url.Values{}
	param.Add("source", source)
	param.Add("access_token", access_token)
	param.Add("codes", codes)

	obj := &common.Location{}
	err := request.HttpGetAsObj(BASE_URL+"common/code_to_location.json", param, obj)

	return obj, err
}

/**
 * 获取国家列表<br/>
 * http://open.weibo.com/wiki/2/common/get_province
 *
 * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
 * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
 * @param capital      省份的首字母，a-z，可为空代表返回全部，默认为全部
 * @param language     返回的语言版本，zh-cn：简体中文、zh-tw：繁体中文、english：英文，默认为zh-cn
 *
 * @throws WeiboException
 */
func (this *api_common) Get_country(source, access_token, capital, language string) (*common.Location, error) {
	param := url.Values{}
	param.Add("source", source)
	param.Add("access_token", access_token)
	param.Add("capital", capital)
	param.Add("language", language)

	obj := &common.Location{}
	err := request.HttpGetAsObj(BASE_URL+"common/get_country.json", param, obj)

	return obj, err
}

/**
 * 获取省份列表<br/>
 * http://open.weibo.com/wiki/2/common/get_province
 *
 * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
 * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
 * @param country      国家的国家代码
 * @param capital      省份的首字母，a-z，可为空代表返回全部，默认为全部
 * @param language     返回的语言版本，zh-cn：简体中文、zh-tw：繁体中文、english：英文，默认为zh-cn
 *
 * @throws WeiboException
 */
func (this *api_common) Get_province(source, access_token, capital, language, country string) (*common.Location,
	error) {
	param := url.Values{}
	param.Add("source", source)
	param.Add("access_token", access_token)
	param.Add("capital", capital)
	param.Add("language", language)
	param.Add("country", country)

	obj := &common.Location{}
	err := request.HttpGetAsObj(BASE_URL+"common/get_province.json", param, obj)

	return obj, err
}

/**
 * 获取城市列表<br/>
 * http://open.weibo.com/wiki/2/common/get_city
 *
 * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
 * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
 * @param province     省份的省份代码
 * @param capital      省份的首字母，a-z，可为空代表返回全部，默认为全部
 * @param language     返回的语言版本，zh-cn：简体中文、zh-tw：繁体中文、english：英文，默认为zh-cn
 *
 * @throws WeiboException
 */
func (this *api_common) Get_city(source, access_token, capital, language, province string) (*common.Location,
	error) {
	param := url.Values{}
	param.Add("source", source)
	param.Add("access_token", access_token)
	param.Add("capital", capital)
	param.Add("language", language)
	param.Add("province", province)

	obj := &common.Location{}
	err := request.HttpGetAsObj(BASE_URL+"common/get_city.json", param, obj)

	return obj, err
}

/**
 * 获取时区配置表<br/>
 * http://open.weibo.com/wiki/2/common/get_timezone
 *
 * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
 * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
 * @param language     返回的语言版本，zh-cn：简体中文、zh-tw：繁体中文、english：英文，默认为zh-cn
 *
 * @throws WeiboException
 */
func (this *api_common) Get_timezone(source, access_token, language string) (*common.Resp_get_timezone, error) {
	param := url.Values{}
	param.Add("source", source)
	param.Add("access_token", access_token)
	param.Add("language", language)

	obj := &common.Resp_get_timezone{}
	err := request.HttpGetAsObj(BASE_URL+"common/get_timezone.json", param, obj)

	return obj, err
}
